<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /* 
            拷贝--复制--（创建一个新对象，和原 对象的属性都一样，但是一个新对象，两个对象的地址不一样）

            深拷贝
            浅拷贝
        */

        var zhangsan = { name: 'zhangsan', age: 18, child: { name: '张三丰' } };
        // 拷贝一个 zhangsan 对象 出来 
        // 创建一个新对象，和原 对象的属性都一样，但是一个新对象，两个对象的地址不一样
        // 下面的拷贝过程--叫浅拷贝-- 
        // ****对象深层的属性是个对象，  直接把 zhangsan.child变量的值 给了 lisi的child属性
        // 因为 zhangsan.child是一个对象，zhangsan.child存 的是一个 地址 
        // 浅拷贝---只拷贝的最外层的属性，内层属性 只是把地址拿过来了 
        // zhangsan.child 和 lisi.child 是同一个地址
        var lisi = { name: zhangsan.name, age: zhangsan.age, child: zhangsan.child };


        /* 
            栈
                zhangsan : 001
                lisi : 002
            堆
                001 {name:'zhangsan',age:18,child:0001}

                0001 {name:'张三丰'}

                002 {name:'zhangsan',age:18,child:0001}
        
        */

        console.log(zhangsan);
        console.log(lisi);

        // false
        console.log(zhangsan === lisi);

        // 修改了lisi 孩子的 age属性，结果 zhangsan的child的age属性也改变
        lisi.child.age = 19
        console.log(zhangsan.child);

    </script>

</body>

</html>